﻿#region Usings

using System.Collections.Generic;

#endregion

namespace Yandex.Market.Api.Model
{
    /// <summary>
    /// </summary>
    public interface IOffer
    {
        /// <summary>
        ///   ID товара. Обязательный элемент.
        /// </summary>
        uint ID { get; set; }

        ///<summary>
        ///  Статус доступности товара - в наличии/на заказ<br />
        ///  available="false" - товарное предложение на заказ. <br />
        ///  Магазин готов осуществить поставку товара на указанных условиях в течение месяца <br />
        ///  (срок может быть больше для товаров, которые всеми участниками рынка поставляются только на заказ). <br />
        ///  Те товарные предложения, на которые заказы не принимаются, не должны выгружаться в Яндекс.Маркет.<br /><br />
        ///  available="true" - товарное предложение в наличии. <br />
        ///  Магазин готов сразу договариваться с покупателем о доставке товара
        ///</summary>
        bool? Available { get; set; }

        /// <summary>
        ///   bid (oсновная ставка) — действует на всех местах размещения с возможностью управления ценой клика, если не указана ставка для отдельного места<br />
        ///   Должен иметь целые положительные значения. Например: 21, что соответствует ставке 0,21 у.е.
        /// </summary>
        uint? BID { get; set; }

        /// <summary>
        ///   cbid (cтавка для карточек) — действует только на карточках моделей.<br />
        ///   Должен иметь целые положительные значения. Например: 21, что соответствует ставке 0,21 у.е.
        /// </summary>
        uint? CBID { get; set; }

        /// <summary>
        ///   Обязательный элемент.<br />
        ///   Цена, по которой данный товар можно приобрести.Цена товарного предложения округляеся и выводится в зависимости от настроек пользователя.
        /// </summary>
        double Price { get; set; }

        /// <summary>
        /// </summary>
        double? Wprice { get; set; }

        /// <summary>
        ///   Обязательный элемент.<br /> 
        ///   Идентификатор валюты товара (RUR, USD, UAH, KZT).<br /> 
        ///   Для корректного отображения цены в национальной валюте, необходимо использовать идентификатор (например, UAH) с соответствующим значением цены.<br />
        /// </summary>
        YmlCurrencyId CurrencyId { get; set; }

        /// <summary>
        ///   Обязательный элемент.<br />
        ///   Идентификатор категории товара (целое число не более 18 знаков).<br /> 
        ///   Товарное предложение может принадлежать только одной категории
        /// </summary>
        List<CategoryID> CategoryIds { get; set; }

        /// <summary>
        /// </summary>
        string Xcategory { get; set; }

        /// <summary>
        ///   URL-адрес страницы товара. Максимальная длина URL — 255 символов.
        /// </summary>
        string Url { set; get; }

        /// <summary>
        /// </summary>
        string BuyUrl { get; set; }

        /// <summary>
        ///   Ссылка на картинку соответствующего товарного предложения. <br />
        ///   Недопустимо давать ссылку на "заглушку", т.е. на картинку где написано "картинка отсутствует" или на логотип магазина<br />
        ///   По указанному URL-адресу должна находиться картинка формата jpeg, gif или png размером не меньше 100х100 пикселов. <br />
        ///   Картинки большего размера будут уменьшены автоматически. <br />
        ///   Ссылка на HTML-страницу, содержащую картинку, не допустима.
        /// </summary>
        string Picture { set; get; }

        ///<summary>
        ///  Элемент, обозначающий возможность доставить соответствующий товар. "false" данный товар не может быть доставлен ("самовывоз").<br />
        ///  "true" товар доставляется на условиях, которые указываются в партнерском интерфейсе http://partner.market.yandex.ru на странице "редактирование".
        ///</summary>
        bool? Delivery { set; get; }

        /// <summary>
        /// </summary>
        bool? DeliveryIncluded { get; set; }

        /// <summary>
        ///   Наличие точки продаж, где товар можно купить без предварительного заказа, указывается значением true у элемента store. <br />
        ///   Если точки продаж нет, используется значение false.
        /// </summary>
        bool? Store { get; set; }

        /// <summary>
        ///   Если предусмотрена возможность предварительно заказать данный товар и забрать его в точке продаж, для элемента используется значение true.<br />
        ///   В противном случае — false.
        /// </summary>
        bool? Pickup { get; set; }

        /// <summary>
        /// </summary>
        double? LocalDeliveryCost { set; get; }

        /// <summary>
        ///   Описание товарного предложения
        /// </summary>
        string Description { set; get; }

        /// <summary>
        ///   Элемент предназначен для отметки товаров, имеющих официальную гарантию производителя.
        /// </summary>
        bool? ManufacturerWarranty { set; get; }

        /// <summary>
        ///   Элемент предназначен для указания страны производства товара.
        /// </summary>
        string CountryOfOrigin { set; get; }

        /// <summary>
        /// </summary>
        OrderingTime OrderingTime { get; set; }

        /// <summary>
        /// </summary>
        string Aliases { get; set; }

        /// <summary>
        /// </summary>
        List<string> Additionals { get; set; }

        ///<summary>
        ///  Элемент используется для отражения информации о минимальной сумме заказа, минимальной партии товара или необходимости предоплаты, <br />
        ///  а так же для описания акций магазина (кроме скидок).<br />
        ///  Допустимая длина текста в элементе - 50 символов.
        ///</summary>
        string SalesNotes { get; set; }

        /// <summary>
        /// </summary>
        string Promo { get; set; }

        /// <summary>
        ///   Элемент предназначен для обозначения товара, который можно скачать.
        /// </summary>
        bool? Downloadable { get; set; }

        /// <summary>
        ///   Элемент обязателен для обозначения товара, имеющего отношение к удовлетворению сексуальных потребностей,<br /> 
        ///   либо иным образом эксплуатирующего интерес к сексу.
        /// </summary>
        bool? Adult { get; set; }

        /// <summary>
        ///   Штрихкод товара, указанный производителем.
        /// </summary>
        List<uint> Barcodes { get; set; }

        ///<summary>
        ///  Характеристики товара.
        ///  Для описания каждого параметра используется отдельный элемент param.
        ///</summary>
        List<Param> Params { get; set; }
    }
}